package uk.org.aspellclark.gedcom.model.structures;

import java.util.List;

import uk.org.aspellclark.gedcom.model.PersonalNamePieces;

/** <pre>PERSONAL_NAME_STRUCTURE:=
    n NAME &lt;NAME_PERSONAL>                 {1:1}
        +1 TYPE &lt;NAME_TYPE>                {0:1}
        +1 &lt;&lt;PERSONAL_NAME_PIECES>>        {0:1}
        +1 FONE &lt;NAME_PHONETIC_VARIATION>  {0:M}
            +2 TYPE &lt;PHONETIC_TYPE>        {1:1}
            +2 &lt;&lt;PERSONAL_NAME_PIECES>>    {0:1}
        +1 ROMN &lt;NAME_ROMANIZED_VARIATION> {0:M}
            +2 TYPE &lt;ROMANIZED_TYPE>       {1:1}
            +2 &lt;&lt;PERSONAL_NAME_PIECES>>    {0:1}</pre><p>
The name value is formed in the manner the name is normally spoken, with the given name and family
name (surname) separated by slashes (/). (See &lt;NAME_PERSONAL>, page 54.) Based on the
dynamic nature or unknown compositions of naming conventions, it is difficult to provide more
detailed name piece structure to handle every case. The NPFX, GIVN, NICK, SPFX, SURN, and
NSFX tags are provided optionally for systems that cannot operate effectively with less structured
information. For current future compatibility, all systems must construct their names based on the
&lt;NAME_PERSONAL> structure. Those using the optional name pieces should assume that few
systems will process them, and most will not provide the name pieces.</p><p>
A &lt;NAME_TYPE> is used to specify the particular variation that this name is. For example; if the
name type is subordinate to the &lt;NAME_PERSONAL> it could indicate that this name is a name
taken at immigration or that it could be an "also known as" name (see page 56.)</p><p>
Future GEDCOM releases (6.0 or later) will likely apply a very different strategy to resolve this
problem, possibly using a sophisticated parser and a name-knowledge database.</p>
 */
public class PersonalNameStructure extends GedcomStructure {
	public String name;
	public String type;
	public PersonalNamePieces pieces;
	public List<PersonalNamePieces> phoneticVariation;
	public List<PersonalNamePieces> romanizedVariation;
}
